home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 August: Tool Chest / Dev.CD Aug 95 TC / Dev.CD Aug 95 TC.toast / Tool Chest / Interfaces / UniversalInterfaces 2.0 / PInterfaces / Windows.p < prev    next >
Encoding:
Text File  |  1995-04-18  |  13.4 KB  |  511 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        Windows.p
  3.  
  4.      Contains:    Window Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. }
  19.  
  20. {$IFC UNDEFINED UsingIncludes}
  21. {$SETC UsingIncludes := 0}
  22. {$ENDC}
  23.  
  24. {$IFC NOT UsingIncludes}
  25.  UNIT Windows;
  26.  INTERFACE
  27. {$ENDC}
  28.  
  29. {$IFC UNDEFINED __WINDOWS__}
  30. {$SETC __WINDOWS__ := 1}
  31.  
  32. {$I+}
  33. {$SETC WindowsIncludes := UsingIncludes}
  34. {$SETC UsingIncludes := 1}
  35.  
  36.  
  37. {$IFC UNDEFINED __TYPES__}
  38. {$I Types.p}
  39. {$ENDC}
  40. {    ConditionalMacros.p                                            }
  41.  
  42. {$IFC UNDEFINED __MEMORY__}
  43. {$I Memory.p}
  44. {$ENDC}
  45. {    MixedMode.p                                                    }
  46.  
  47. {$IFC UNDEFINED __QUICKDRAW__}
  48. {$I Quickdraw.p}
  49. {$ENDC}
  50. {    QuickdrawText.p                                                }
  51.  
  52. {$IFC UNDEFINED __EVENTS__}
  53. {$I Events.p}
  54. {$ENDC}
  55. {    OSUtils.p                                                    }
  56.  
  57. {$IFC UNDEFINED __CONTROLS__}
  58. {$I Controls.p}
  59. {$ENDC}
  60. {    Menus.p                                                        }
  61.  
  62. {$PUSH}
  63. {$ALIGN MAC68K}
  64. {$LibExport+}
  65.  
  66. CONST
  67.     kStandardWindowDefinition    = 0;                            { for document windows and dialogs}
  68.     kRoundWindowDefinition        = 1;                            { old da-style window}
  69.     kFloatingWindowDefinition    = 124;                            { for floating windows}
  70.  
  71. {####################################################################################}
  72. {}
  73. { Window Variant Codes}
  74. {}
  75. {####################################################################################}
  76. { for use with kStandardWindowDefinition }
  77.     kModalDialogVariantCode        = 1;
  78.     kMovableModalDialogVariantCode = 5;
  79. { for use with kFloatingWindowDefinition }
  80.     kSideFloaterVariantCode        = 8;
  81.  
  82. {####################################################################################}
  83. {}
  84. { Old-style procIDs.  For use only with New(C)Window}
  85. {}
  86. {####################################################################################}
  87.     documentProc                = 0;
  88.     dBoxProc                    = 1;
  89.     plainDBox                    = 2;
  90.     altDBoxProc                    = 3;
  91.     noGrowDocProc                = 4;
  92.     movableDBoxProc                = 5;
  93.     zoomDocProc                    = 8;
  94.     zoomNoGrow                    = 12;
  95.     rDocProc                    = 16;
  96. { floating window defproc ids }
  97.     floatProc                    = 1985;
  98.     floatGrowProc                = 1987;
  99.     floatZoomProc                = 1989;
  100.     floatZoomGrowProc            = 1991;
  101.     floatSideProc                = 1993;
  102.     floatSideGrowProc            = 1995;
  103.     floatSideZoomProc            = 1997;
  104.     floatSideZoomGrowProc        = 1999;
  105.  
  106. {####################################################################################}
  107. {}
  108. { Standard window kinds}
  109. {}
  110. {####################################################################################}
  111.     dialogKind                    = 2;
  112.     userKind                    = 8;
  113.     kDialogWindowKind            = 2;
  114.     kApplicationWindowKind        = 8;
  115.  
  116. {####################################################################################}
  117. {}
  118. { FindWindow result codes}
  119. {}
  120. {####################################################################################}
  121.     inDesk                        = 0;
  122.     inMenuBar                    = 1;
  123.     inSysWindow                    = 2;
  124.     inContent                    = 3;
  125.     inDrag                        = 4;
  126.     inGrow                        = 5;
  127.     inGoAway                    = 6;
  128.     inZoomIn                    = 7;
  129.     inZoomOut                    = 8;
  130.  
  131.     wDraw                        = 0;
  132.     wHit                        = 1;
  133.     wCalcRgns                    = 2;
  134.     wNew                        = 3;
  135.     wDispose                    = 4;
  136.     wGrow                        = 5;
  137.     wDrawGIcon                    = 6;
  138.  
  139.     deskPatID                    = 16;
  140.  
  141. {####################################################################################}
  142. {}
  143. { Window Definition hit test result codes ("WindowPart")}
  144. {}
  145. {####################################################################################}
  146.     wNoHit                        = 0;
  147.     wInContent                    = 1;
  148.     wInDrag                        = 2;
  149.     wInGrow                        = 3;
  150.     wInGoAway                    = 4;
  151.     wInZoomIn                    = 5;
  152.     wInZoomOut                    = 6;
  153.  
  154. TYPE
  155.     WindowDefProcPtr = ProcPtr;  { FUNCTION WindowDef(varCode: INTEGER; theWindow: WindowRef; message: INTEGER; param: LONGINT): LONGINT; }
  156.     {
  157.         DeskHookProcPtr uses register based parameters on the 68k and cannot
  158.         be written in or called from a high-level language without the help of
  159.         mixed mode or assembly glue.
  160.  
  161.         In:
  162.          => mouseClick      D0.B
  163.          => *theEvent       A0.L
  164.     }
  165.     DeskHookProcPtr = Register68kProcPtr;  { register PROCEDURE DeskHook(mouseClick: BOOLEAN; VAR theEvent: EventRecord); }
  166.     WindowDefUPP = UniversalProcPtr;
  167.     DeskHookUPP = UniversalProcPtr;
  168.  
  169. CONST
  170.     uppWindowDefProcInfo = $00003BB0; { FUNCTION (2 byte param, 4 byte param, 2 byte param, 4 byte param): 4 byte result; }
  171.     uppDeskHookProcInfo = $00130802; { Register PROCEDURE (1 byte in D0, 4 bytes in A0); }
  172.  
  173. FUNCTION NewWindowDefProc(userRoutine: WindowDefProcPtr): WindowDefUPP;
  174.     {$IFC NOT GENERATINGCFM }
  175.     INLINE $2E9F;
  176.     {$ENDC}
  177.  
  178. FUNCTION NewDeskHookProc(userRoutine: DeskHookProcPtr): DeskHookUPP;
  179.     {$IFC NOT GENERATINGCFM }
  180.     INLINE $2E9F;
  181.     {$ENDC}
  182.  
  183. FUNCTION CallWindowDefProc(varCode: INTEGER; theWindow: WindowRef; message: INTEGER; param: LONGINT; userRoutine: WindowDefUPP): LONGINT;
  184.     {$IFC NOT GENERATINGCFM}
  185.     INLINE $205F, $4E90;
  186.     {$ENDC}
  187.  
  188. PROCEDURE CallDeskHookProc(mouseClick: BOOLEAN; VAR theEvent: EventRecord; userRoutine: DeskHookUPP);
  189.     {$IFC NOT GENERATINGCFM}
  190.     {To be implemented:  Glue to move parameters into registers.}
  191.     {$ENDC}
  192. FUNCTION GetGrayRgn : RgnHandle;
  193.     {$IFC NOT CFMSYSTEMCALLS}
  194.     INLINE $2EB8, $09EE;            { MOVE.l $09EE,(SP) }
  195.     {$ENDC}
  196.  
  197.  
  198. TYPE
  199.     WinCTab = RECORD
  200.         wCSeed:                    LONGINT;                                {reserved}
  201.         wCReserved:                INTEGER;                                {reserved}
  202.         ctSize:                    INTEGER;                                {usually 4 for windows}
  203.         ctTable:                ARRAY [0..4] OF ColorSpec;
  204.     END;
  205.  
  206.     WCTabPtr = ^WinCTab;
  207.     WCTabHandle = ^WCTabPtr;
  208.  
  209.  
  210. PROCEDURE InitWindows;
  211.     {$IFC NOT GENERATINGCFM}
  212.     INLINE $A912;
  213.     {$ENDC}
  214. PROCEDURE GetWMgrPort(VAR wPort: GrafPtr);
  215.     {$IFC NOT GENERATINGCFM}
  216.     INLINE $A910;
  217.     {$ENDC}
  218. FUNCTION NewWindow(wStorage: UNIV Ptr; {CONST}VAR boundsRect: Rect; title: ConstStr255Param; visible: BOOLEAN; theProc: INTEGER; behind: WindowRef; goAwayFlag: BOOLEAN; refCon: LONGINT): WindowRef;
  219.     {$IFC NOT GENERATINGCFM}
  220.     INLINE $A913;
  221.     {$ENDC}
  222. FUNCTION GetNewWindow(windowID: INTEGER; wStorage: UNIV Ptr; behind: WindowRef): WindowRef;
  223.     {$IFC NOT GENERATINGCFM}
  224.     INLINE $A9BD;
  225.     {$ENDC}
  226. PROCEDURE CloseWindow(theWindow: WindowRef);
  227.     {$IFC NOT GENERATINGCFM}
  228.     INLINE $A92D;
  229.     {$ENDC}
  230. PROCEDURE DisposeWindow(theWindow: WindowRef);
  231.     {$IFC NOT GENERATINGCFM}
  232.     INLINE $A914;
  233.     {$ENDC}
  234. PROCEDURE GetWTitle(theWindow: WindowRef; VAR title: Str255);
  235.     {$IFC NOT GENERATINGCFM}
  236.     INLINE $A919;
  237.     {$ENDC}
  238. PROCEDURE SelectWindow(theWindow: WindowRef);
  239.     {$IFC NOT GENERATINGCFM}
  240.     INLINE $A91F;
  241.     {$ENDC}
  242. PROCEDURE HideWindow(theWindow: WindowRef);
  243.     {$IFC NOT GENERATINGCFM}
  244.     INLINE $A916;
  245.     {$ENDC}
  246. PROCEDURE ShowWindow(theWindow: WindowRef);
  247.     {$IFC NOT GENERATINGCFM}
  248.     INLINE $A915;
  249.     {$ENDC}
  250. PROCEDURE ShowHide(theWindow: WindowRef; showFlag: BOOLEAN);
  251.     {$IFC NOT GENERATINGCFM}
  252.     INLINE $A908;
  253.     {$ENDC}
  254. PROCEDURE HiliteWindow(theWindow: WindowRef; fHilite: BOOLEAN);
  255.     {$IFC NOT GENERATINGCFM}
  256.     INLINE $A91C;
  257.     {$ENDC}
  258. PROCEDURE BringToFront(theWindow: WindowRef);
  259.     {$IFC NOT GENERATINGCFM}
  260.     INLINE $A920;
  261.     {$ENDC}
  262. PROCEDURE SendBehind(theWindow: WindowRef; behindWindow: WindowRef);
  263.     {$IFC NOT GENERATINGCFM}
  264.     INLINE $A921;
  265.     {$ENDC}
  266. FUNCTION FrontWindow: WindowRef;
  267.     {$IFC NOT GENERATINGCFM}
  268.     INLINE $A924;
  269.     {$ENDC}
  270. PROCEDURE DrawGrowIcon(theWindow: WindowRef);
  271.     {$IFC NOT GENERATINGCFM}
  272.     INLINE $A904;
  273.     {$ENDC}
  274. PROCEDURE MoveWindow(theWindow: WindowRef; hGlobal: INTEGER; vGlobal: INTEGER; front: BOOLEAN);
  275.     {$IFC NOT GENERATINGCFM}
  276.     INLINE $A91B;
  277.     {$ENDC}
  278. PROCEDURE SizeWindow(theWindow: WindowRef; w: INTEGER; h: INTEGER; fUpdate: BOOLEAN);
  279.     {$IFC NOT GENERATINGCFM}
  280.     INLINE $A91D;
  281.     {$ENDC}
  282. PROCEDURE ZoomWindow(theWindow: WindowRef; partCode: INTEGER; front: BOOLEAN);
  283.     {$IFC NOT GENERATINGCFM}
  284.     INLINE $A83A;
  285.     {$ENDC}
  286. PROCEDURE InvalRect({CONST}VAR badRect: Rect);
  287.     {$IFC NOT GENERATINGCFM}
  288.     INLINE $A928;
  289.     {$ENDC}
  290. PROCEDURE InvalRgn(badRgn: RgnHandle);
  291.     {$IFC NOT GENERATINGCFM}
  292.     INLINE $A927;
  293.     {$ENDC}
  294. PROCEDURE ValidRect({CONST}VAR goodRect: Rect);
  295.     {$IFC NOT GENERATINGCFM}
  296.     INLINE $A92A;
  297.     {$ENDC}
  298. PROCEDURE ValidRgn(goodRgn: RgnHandle);
  299.     {$IFC NOT GENERATINGCFM}
  300.     INLINE $A929;
  301.     {$ENDC}
  302. PROCEDURE BeginUpdate(theWindow: WindowRef);
  303.     {$IFC NOT GENERATINGCFM}
  304.     INLINE $A922;
  305.     {$ENDC}
  306. PROCEDURE EndUpdate(theWindow: WindowRef);
  307.     {$IFC NOT GENERATINGCFM}
  308.     INLINE $A923;
  309.     {$ENDC}
  310. PROCEDURE SetWRefCon(theWindow: WindowRef; data: LONGINT);
  311.     {$IFC NOT GENERATINGCFM}
  312.     INLINE $A918;
  313.     {$ENDC}
  314. FUNCTION GetWRefCon(theWindow: WindowRef): LONGINT;
  315.     {$IFC NOT GENERATINGCFM}
  316.     INLINE $A917;
  317.     {$ENDC}
  318. PROCEDURE SetWindowPic(theWindow: WindowRef; pic: PicHandle);
  319.     {$IFC NOT GENERATINGCFM}
  320.     INLINE $A92E;
  321.     {$ENDC}
  322. FUNCTION GetWindowPic(theWindow: WindowRef): PicHandle;
  323.     {$IFC NOT GENERATINGCFM}
  324.     INLINE $A92F;
  325.     {$ENDC}
  326. FUNCTION CheckUpdate(VAR theEvent: EventRecord): BOOLEAN;
  327.     {$IFC NOT GENERATINGCFM}
  328.     INLINE $A911;
  329.     {$ENDC}
  330. PROCEDURE ClipAbove(window: WindowRef);
  331.     {$IFC NOT GENERATINGCFM}
  332.     INLINE $A90B;
  333.     {$ENDC}
  334. PROCEDURE SaveOld(window: WindowRef);
  335.     {$IFC NOT GENERATINGCFM}
  336.     INLINE $A90E;
  337.     {$ENDC}
  338. PROCEDURE DrawNew(window: WindowRef; update: BOOLEAN);
  339.     {$IFC NOT GENERATINGCFM}
  340.     INLINE $A90F;
  341.     {$ENDC}
  342. PROCEDURE PaintOne(window: WindowRef; clobberedRgn: RgnHandle);
  343.     {$IFC NOT GENERATINGCFM}
  344.     INLINE $A90C;
  345.     {$ENDC}
  346. PROCEDURE PaintBehind(startWindow: WindowRef; clobberedRgn: RgnHandle);
  347.     {$IFC NOT GENERATINGCFM}
  348.     INLINE $A90D;
  349.     {$ENDC}
  350. PROCEDURE CalcVis(window: WindowRef);
  351.     {$IFC NOT GENERATINGCFM}
  352.     INLINE $A909;
  353.     {$ENDC}
  354. PROCEDURE CalcVisBehind(startWindow: WindowRef; clobberedRgn: RgnHandle);
  355.     {$IFC NOT GENERATINGCFM}
  356.     INLINE $A90A;
  357.     {$ENDC}
  358. FUNCTION GrowWindow(theWindow: WindowRef; startPt: Point; {CONST}VAR bBox: Rect): LONGINT;
  359.     {$IFC NOT GENERATINGCFM}
  360.     INLINE $A92B;
  361.     {$ENDC}
  362. FUNCTION FindWindow(thePoint: Point; VAR theWindow: WindowRef): INTEGER;
  363.     {$IFC NOT GENERATINGCFM}
  364.     INLINE $A92C;
  365.     {$ENDC}
  366. FUNCTION PinRect({CONST}VAR theRect: Rect; thePt: Point): LONGINT;
  367.     {$IFC NOT GENERATINGCFM}
  368.     INLINE $A94E;
  369.     {$ENDC}
  370. FUNCTION DragGrayRgn(theRgn: RgnHandle; startPt: Point; {CONST}VAR limitRect: Rect; {CONST}VAR slopRect: Rect; axis: INTEGER; actionProc: DragGrayRgnUPP): LONGINT;
  371.     {$IFC NOT GENERATINGCFM}
  372.     INLINE $A905;
  373.     {$ENDC}
  374. FUNCTION DragTheRgn(theRgn: RgnHandle; startPt: Point; {CONST}VAR limitRect: Rect; {CONST}VAR slopRect: Rect; axis: INTEGER; actionProc: DragGrayRgnUPP): LONGINT;
  375.     {$IFC NOT GENERATINGCFM}
  376.     INLINE $A926;
  377.     {$ENDC}
  378. FUNCTION TrackBox(theWindow: WindowRef; thePt: Point; partCode: INTEGER): BOOLEAN;
  379.     {$IFC NOT GENERATINGCFM}
  380.     INLINE $A83B;
  381.     {$ENDC}
  382. PROCEDURE GetCWMgrPort(VAR wMgrCPort: CGrafPtr);
  383.     {$IFC NOT GENERATINGCFM}
  384.     INLINE $AA48;
  385.     {$ENDC}
  386. PROCEDURE SetWinColor(theWindow: WindowRef; newColorTable: WCTabHandle);
  387.     {$IFC NOT GENERATINGCFM}
  388.     INLINE $AA41;
  389.     {$ENDC}
  390. PROCEDURE SetDeskCPat(deskPixPat: PixPatHandle);
  391.     {$IFC NOT GENERATINGCFM}
  392.     INLINE $AA47;
  393.     {$ENDC}
  394. FUNCTION NewCWindow(wStorage: UNIV Ptr; {CONST}VAR boundsRect: Rect; title: ConstStr255Param; visible: BOOLEAN; procID: INTEGER; behind: WindowRef; goAwayFlag: BOOLEAN; refCon: LONGINT): WindowRef;
  395.     {$IFC NOT GENERATINGCFM}
  396.     INLINE $AA45;
  397.     {$ENDC}
  398. FUNCTION GetNewCWindow(windowID: INTEGER; wStorage: UNIV Ptr; behind: WindowRef): WindowRef;
  399.     {$IFC NOT GENERATINGCFM}
  400.     INLINE $AA46;
  401.     {$ENDC}
  402. FUNCTION GetWVariant(theWindow: WindowRef): INTEGER;
  403.     {$IFC NOT GENERATINGCFM}
  404.     INLINE $A80A;
  405.     {$ENDC}
  406. PROCEDURE SetWTitle(theWindow: WindowRef; title: ConstStr255Param);
  407.     {$IFC NOT GENERATINGCFM}
  408.     INLINE $A91A;
  409.     {$ENDC}
  410. FUNCTION TrackGoAway(theWindow: WindowRef; thePt: Point): BOOLEAN;
  411.     {$IFC NOT GENERATINGCFM}
  412.     INLINE $A91E;
  413.     {$ENDC}
  414. PROCEDURE DragWindow(theWindow: WindowRef; startPt: Point; {CONST}VAR boundsRect: Rect);
  415.     {$IFC NOT GENERATINGCFM}
  416.     INLINE $A925;
  417.     {$ENDC}
  418. {$IFC NOT STRICT_WINDOWS }
  419.     
  420. TYPE
  421.     WindowPeek = ^WindowRecord;
  422.  
  423.     WindowRecord = RECORD
  424.         port:                    GrafPort;
  425.         windowKind:                INTEGER;
  426.         visible:                BOOLEAN;
  427.         hilited:                BOOLEAN;
  428.         goAwayFlag:                BOOLEAN;
  429.         spareFlag:                BOOLEAN;
  430.         strucRgn:                RgnHandle;
  431.         contRgn:                RgnHandle;
  432.         updateRgn:                RgnHandle;
  433.         windowDefProc:            Handle;
  434.         dataHandle:                Handle;
  435.         titleHandle:            StringHandle;
  436.         titleWidth:                INTEGER;
  437.         controlList:            ControlRef;
  438.         nextWindow:                WindowPeek;
  439.         windowPic:                PicHandle;
  440.         refCon:                    LONGINT;
  441.     END;
  442.  
  443.     CWindowPeek = ^CWindowRecord;
  444.  
  445.     CWindowRecord = RECORD
  446.         port:                    CGrafPort;
  447.         windowKind:                INTEGER;
  448.         visible:                BOOLEAN;
  449.         hilited:                BOOLEAN;
  450.         goAwayFlag:                BOOLEAN;
  451.         spareFlag:                BOOLEAN;
  452.         strucRgn:                RgnHandle;
  453.         contRgn:                RgnHandle;
  454.         updateRgn:                RgnHandle;
  455.         windowDefProc:            Handle;
  456.         dataHandle:                Handle;
  457.         titleHandle:            StringHandle;
  458.         titleWidth:                INTEGER;
  459.         controlList:            ControlRef;
  460.         nextWindow:                CWindowPeek;
  461.         windowPic:                PicHandle;
  462.         refCon:                    LONGINT;
  463.     END;
  464.  
  465.     WStateData = RECORD
  466.         userState:                Rect;                                    {user state}
  467.         stdState:                Rect;                                    {standard state}
  468.     END;
  469.  
  470.     WStateDataPtr = ^WStateData;
  471.     WStateDataHandle = ^WStateDataPtr;
  472.  
  473.     AuxWinPtr = ^AuxWinRec;
  474.     AuxWinHandle = ^AuxWinPtr;
  475.  
  476.     AuxWinRec = RECORD
  477.         awNext:                    AuxWinHandle;                            {handle to next AuxWinRec}
  478.         awOwner:                WindowRef;                                {ptr to window }
  479.         awCTable:                CTabHandle;                                {color table for this window}
  480.         reserved:                UInt32;                                    {  }
  481.         awFlags:                LONGINT;                                {reserved for expansion}
  482.         awReserved:                CTabHandle;                                {reserved for expansion}
  483.         awRefCon:                LONGINT;                                {user Constant}
  484.     END;
  485.  
  486.  
  487. FUNCTION GetAuxWin(theWindow: WindowRef; VAR awHndl: AuxWinHandle): BOOLEAN;
  488.     {$IFC NOT GENERATINGCFM}
  489.     INLINE $AA42;
  490.     {$ENDC}
  491.  
  492. CONST
  493.     wContentColor                = 0;
  494.     wFrameColor                    = 1;
  495.     wTextColor                    = 2;
  496.     wHiliteColor                = 3;
  497.     wTitleBarColor                = 4;
  498.  
  499. {$ENDC}
  500.  
  501. {$ALIGN RESET}
  502. {$POP}
  503.  
  504. {$SETC UsingIncludes := WindowsIncludes}
  505.  
  506. {$ENDC} {__WINDOWS__}
  507.  
  508. {$IFC NOT UsingIncludes}
  509.  END.
  510. {$ENDC}
  511.